\author {Sven Goldt}
\title {The Linux Programmer's Guide}
\chapter {The Linux operating system}

  In March 1991 Linus Benedict Torvalds bought the multitasking system
  Minix for his AT 386. He used it to develop his own multitasking
  system which he called Linux. In September 1991 he released the first
  prototype by e-mail to some other Minix users on the internet, thus
  beginning the Linux project. Many programmers from that point on have
  supported Linux. They have added device drivers, developed applications,
  and aimed for POSIX compliance.  Today Linux is very powerful, but
  what is best is that it's free.  Work is beeing done to port Linux to
  other platforms.

\chapter {The Linux kernel}

 The base of Linux is the kernel. You could replace each and every
 library, but as long as the Linux kernel remained, it would still be
 Linux.  The kernel contains device drivers, memory management, process
 management and communication management.  The kernel hacker gurus
 follow POSIX guidelines which sometimes makes programming easier and
 sometimes harder. If your program behaves differently on a new Linux
 kernel release, chances are that a new POSIX guideline has been
 implemented. For programming information about the Linux kernel,
 read the Linux Kernel Hacker's Guide.


\chapter {The Linux libc package}

\noindent
{\obeylines
libc: ISO 8859.1, $<linux/param.h>$, YP functions, crypt functions,
some basic shadow routines (by default not included), ...
old routines for compatibility in libcompat (by default not activated),
english, french or german error messages,
bsd 4.4lite compatible screen handling routines in libcurses,
bsd compatible routines in libbsd, screen handling routines in libtermcap,
database management routines in libdbm,
mathematic routines in libm, entry to execute programs in crt0.o ???,
byte sex information in libieee ??? (could someone give some infos
instead of laughing ?), user space profiling in libgmon.
I wish someone of the Linux libc developers would write this chapter.
All i can say now that there is going to be a change from the
a.out executable format to the elf (executable and linkable format)
which also means a change in building shared libraries.
Currently both formats (a.out and elf) are supported.
\medskip}

  Most parts of the Linux libc package are under the Library GNU Public 
  License, though some are under a special exception copyright like crt0.o.
  For commercial binary distributions this means a restriction that
  forbids statically linked executables. Dynamically linked executables 
  are again a special exception and Richard Stallman of the
  FSF said:

  {\smallskip \noindent \it [...] But it seems to me that we should
  unambiguously permit distribution of a dynamically linked executable
  *without* accompanying libraries, provided that the object files that
  make up the executable are themselves unrestricted according to
  section 5 [...] So I'll make the decision now to permit this.
  Actually updating the LGPL will have to wait for when I have time to
  make and check a new version.}

\endinput
